#include "Tktds8k.h"
#include
#include
#include
#include
#include "Demo1.h"
#define TRUE 1
#define FALSE 0
static int pnlmeas;
double rTimerInterval;
int ret, counter = 0;
ViStatus status;
ViSession ID;
int StartFlag = FALSE;
int main (int argc, char *argv[])
{ // standard code generated by LabWindows
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /* out of memory */
if ((pnlmeas = LoadPanel (0, "Demo1.uir", PNLMEAS)) < 0)
return -1;
DisplayPanel (pnlmeas);
RunUserInterface ();
DiscardPanel (pnlmeas);
return 0;
}
int CVICALLBACK ProcessTimer (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{ ViChar buf[128];
ViInt32 gMeasType;
ViReal64 dMeasValue;
char hold[30];
int index;
if ((StartFlag == TRUE) && (event == EVENT_TIMER_TICK)){
// get index of currently selected item
ret = GetCtrlIndex(pnlmeas,PNLMEAS_LSTMEAS, &index);
switch(index){
case 0:
// get measurement value
tktds8k_GetMeasValue (ID, tktds8k_MEAS_1, &dMeasValue);
break;
case 1:
tktds8k_GetMeasValue (ID, tktds8k_MEAS_2, &dMeasValue);
break;
case 2 :
tktds8k_GetMeasValue (ID, tktds8k_MEAS_3, &dMeasValue);
break;
case 3 :
tktds8k_GetMeasValue (ID, tktds8k_MEAS_4, &dMeasValue);
break;
case 4 :
tktds8k_GetMeasValue (ID, tktds8k_MEAS_5, &dMeasValue);
break;
case 5 :
tktds8k_GetMeasValue (ID, tktds8k_MEAS_6, &dMeasValue);
break;
case 6 :
tktds8k_GetMeasValue (ID, tktds8k_MEAS_7, &dMeasValue);
break;
case 7 :
tktds8k_GetMeasValue (ID, tktds8k_MEAS_8, &dMeasValue);
break;
default:
break;
}
// format floating point value to 12 levels of precision
Fmt(hold,"%s<%f[p12]", dMeasValue);
//clear string buffer
buf[0] = '\0';
strcpy(buf, hold);
// insert into list box
ret = InsertListItem (pnlmeas, PNLMEAS_LSTVALUES, -1, buf, index);
counter++;
// turn off after 1000 acquisitions
if(counter >= 1000){
StartFlag = FALSE;
ret = SetCtrlAttribute(pnlmeas,PNLMEAS_TIMER,ATTR_ENABLED,FALSE);
}
}
else {
StartFlag = FALSE;
}
return 0;
}
int CVICALLBACK cmdStop (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
// disable timer
ret = SetCtrlAttribute(pnlmeas,PNLMEAS_TIMER,ATTR_ENABLED,FALSE);
StartFlag = FALSE;
break;
}
return 0;
}
int CVICALLBACK cmdExit (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
QuitUserInterface (0);
break;
}
return 0;
}
int CVICALLBACK TimerInterval (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
// read interval from dial control and assign to timer control
ret = GetCtrlVal(pnlmeas, PNLMEAS_TINTERVAL,&rTimerInterval);
ret = SetCtrlAttribute(pnlmeas,PNLMEAS_TIMER,ATTR_INTERVAL,rTimerInterval);
break;
}
return 0;
}
int CVICALLBACK cmdSTART (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{ char InstDesc[128];
char buf[256];
char *intro = "Connected to: ";
int n;
switch (event)
{
case EVENT_COMMIT:
// reset counter variable
counter = 0;
// indicate to user we are connecting to scope
ret = SetCtrlVal(pnlmeas, PNLMEAS_LBLSTATUS, "Connecting to first scope found...");
// clear measurement values list box
ret = ClearListCtrl(pnlmeas, PNLMEAS_LSTVALUES);
// connect
status = tktds8k_autoConnectToFirst (&ID);
if (status >= VI_SUCCESS)
// display instrument description to user once connected
ret = tktds8k_GetInstrDesc (ID, InstDesc);
buf[0]='\0';
strcat(buf, intro);
strcat(buf,InstDesc);
// enable timer and change StartFlag
ret = SetCtrlVal(pnlmeas, PNLMEAS_LBLSTATUS, buf);
ret = SetCtrlAttribute(pnlmeas,PNLMEAS_TIMER,ATTR_ENABLED,TRUE);
StartFlag = TRUE;
break;
}
return 0;
}
int CVICALLBACK HandlePanel (int panel, int event, void *callbackData,
int eventData1, int eventData2)
{ char buf[128];
char hold[30];
char *item = "Meas ";
int i;
switch (event)
{
case EVENT_GOT_FOCUS:
// clear measurement panel
ret = ClearListCtrl (pnlmeas, PNLMEAS_LSTMEAS);
// populate list box with measurements for TDS/CSA8000
for(i = 1; i <= 8; i++){
Fmt(hold,"%s<%i", i);
buf[0] = '\0';
strcat(buf, item);
strcat(buf, hold);
ret = InsertListItem (pnlmeas, PNLMEAS_LSTMEAS, -1, buf, counter);
}
// set index value to Meas1
ret = SetCtrlIndex(pnlmeas,PNLMEAS_LSTMEAS, 0);
break;
case EVENT_LOST_FOCUS:
break;
case EVENT_CLOSE:
break;
}
return 0;
}